// 封装axios请求的模块
import axios from 'axios'
// 用axios重新生成了请求的实例
const server = axios.create({
  baseURL: 'https://api.it120.cc', // 项目发送axios请求的公共地址
  timeout: 5000, // 请求超时时间 这里是请求超过五秒后还没有获得请求结果 提示请求超时
})

// axios请求阶段相关配置
// 请求拦截
// interceptors axios的拦截对象 request请求的意思 use使用的意思
// 这里的整体意思就是使用请求拦截
server.interceptors.request.use(
  config => {
    // config包含了请求相关的所有信息
    // 可以同过config对象给请求配置或者修改信息
    config.headers.token = '11111'
    return config // 将配置完成的token返回 如果不返回 请求不会继续进行
  },
  err => {
    // 请求发生错误时的回调函数
    // 这里的意思是请求发送错误时将错误抛出
    // throw new Error(err)
    // console.error(err) //将错误信息打印在控制台中
    Promise.reject(err) // 使用promise将错误信息返回出去
  },
)

// axios 接受到服务器响应信息后的配置
// response 是响应的意思 这里的意思是使用响应拦截
server.interceptors.response.use(
  res => {
    // res包含了服务器返回的所有响应信息 其实就是服务器返回给你的东西
    return res.data
  },
  err => {
    // 当服务器响应产生错误时的回调函数
    console.error(err) // 这里将服务器发生错误的错误信息打印在控制台中
  },
)

export default server
